package 剑指offer;

/**
 * Created by IntelliJ IDEA.
 *
 * @ProjectName leetcode
 * @Author Ding
 * @CreateTime 2022/8/26 15:04 星期五
 */
public class _58_2_左旋转字符串 {
    public static void main(String[] args) {
        String s = "abcdefg";
        int k = 2;
        System.err.println(reverseLeftWords(s, k));
        System.err.println(reverseLeftWords2(s, k));
    }

    /**
     * > 2022/08/26 15:13:30
     * 解答成功:
     * 	执行耗时:0 ms,击败了100.00% 的Java用户
     * 	内存消耗:41.4 MB,击败了41.82% 的Java用户
     * @param s
     * @param n
     * @return
     */
    public static String reverseLeftWords(String s, int n) {
        //新的头部，考虑反转太多次，于是取余
        int newHead = n % s.length();
        //拼接返回
        return s.substring(newHead) + s.substring(0, newHead);
    }

    /**
     * 说真的，直接调API很舒服的，自己造轮子跟个傻逼一样
     * > 2022/08/26 15:18:23
     * 解答成功:
     * 	执行耗时:5 ms,击败了26.69% 的Java用户
     * 	内存消耗:41.3 MB,击败了60.75% 的Java用户
     * @param s
     * @param n
     * @return
     */
    public static String reverseLeftWords2(String s, int n) {
        StringBuilder sb = new StringBuilder();
        for (int i = n; i < n + s.length(); i++) {
            sb.append(s.charAt(i % s.length()));
        }
        return sb.toString();
    }
}
